The invention relates to communication of digital data using trellis coded modulation with punctured convolutional codes. In particular, the present invention relates to a depuncture technique employed in a receiver to process punctured conventional codes in digital communication systems.
Convolutional codes, used in channel coding, are widely utilized in many practical communication systems, with the main decoding strategy for convolutional codes based on Viterbi algorithm. In convolutional coding, a code rate is a ratio of the numbers of input bits to output bits. For example, a convolutional coder with code rate of 1/3 inputs one data bit and outputs three encoded bits, that is, two extra bits are added to protect the original data bit. Code puncturing is a way to intentionally discard some of the encoded bits so as to meet the constraints on data rate and bandwidth, although a few protection capability is sacrificed.
FIG. 1 (Related Art) is a block diagram of a convolutional coder using puncture codes complying with the standard of the ITU-T Recommendation J.83 Annex B, in which the original code rate is 1/2 and the puncture code rate is 4/5. The convolutional coder 10 includes four registers 100, 101, 102 and 103, two exclusive-OR gates 110 and 111, and a commutator 120. The four registers 100-103 forms a delay line for delaying the input bits X[n] where n is the time index. To speak more specifically, the four registers 100-103 are used to store four previous input bits X[n−1], X[n−2], X[n−3] and X[n−4], which have 16 combinations and are used to define the state of the convolutional coder 10. As shown in FIG. 1, codes OUTU[n] and OUTL[n] are expressed by:OUTU[n]=X[n]⊕X[n−2]⊕X[n−4];   (1)OUTL[n]=X[n]⊕X[n−1]⊕X[n−2]⊕X[n−3]⊕X[n−4]  (2)
Equations (1) and (2) are determined according to the generating codes G1 and G2, where G1=[10101] and G2=[11111]. It is noted that different convolutional coders will have different generating codes. Commutator 120 implements the puncture function using puncture matrix [P1;P2]=[0001;1111], where “0” indicates no transmission and “1” indicates transmission.
For each trellis group, the convolutional coder 10 can generate 8 convolutionally encoded bits from 4 input bits. The commutator 120 selects 5 bits from the 8 convolutionally encoded bits to be the output Y according to the puncture matrix. That is, code puncturing converts the code rate 1/2 to the code rate 4/5 since only 5 encoded bits are retained after puncturing.
Decoding the convolutional codes with puncture codes is easy if the convolutional coding and the puncture matrix are previously known. In some communication systems, such as ITU-T J.83B, however, it is necessary to directly ascertain the puncture boundary or puncture position from an incoming bit stream if there is no training sequence therein.
U.S. Pat. No. 6,233,712 discloses a 64/256 Quadrature Amplitude Modulation Trellis Coded Modulation (QAM TCM) decoder, capable of determining the puncture position. As disclosed therein, the decoder includes a depuncture circuit, a Viterbi decoder, a re-encode/puncture circuitry and a synchronization circuit. The incoming QAM signal stream is first demodulated into an in-phase component and a quadrature component. The depuncture 404 generates a depunctured in-phase component and a depunctured quadrature component using a puncture position for testing. The Viterbi decoder generates a decoded in-phase bit and a decoded quadrature bit for each pair of symbols. The re-encode/puncture circuitry performs binary convolutional encoding and puncturing on the decoded in-phase and quadrature bits to recover the incoming encoded symbols for testing. Conversely, the synchronization circuit performs hard decision based on the in-phase component and a quadrature component to generate hard symbols, and compares the hard symbols with the recovered encoded symbols for the reencode/puncture circuitry. If the puncture position for testing is accurate, the difference between the hard symbols and the recovered encoded symbols is minimal.
Accordingly, the method for detecting the puncture position adopted by U.S. Pat. No. 6,233,712 requires extra encode/puncture circuitry, increasing manufacturing costs and complicating product design.